#include <iostream>
#include <fstream>
#include <string>
#include "bundle.h"

int main(int argc, char* argv[])
{
  if(argc < 3)
  {
    printf("argv[1]是压缩包名称\n");
    printf("argv[2]是解压缩后的文件\n");
    return -1;
  }
  std::string ifilename = argv[1]; // 压缩包名
  std::string ofilename = argv[2]; // 解压缩后文件名

  std::ifstream ifs;
  ifs.open(ifilename, std::ios::binary); // 打开压缩文件
  ifs.seekg(0, std::ios::end); // 跳转到读写位置到文件末尾
  size_t fsize = ifs.tellg(); // 获取末尾偏移量--获取文件长度
  ifs.seekg(0, std::ios::beg); // 返回到文件起始
  std::string body;
  body.resize(fsize); // 调整body大小为文件大小
  ifs.read(&body[0], fsize); // 读取压缩文件所有内容到body
  ifs.close();

  std::string unpacked = bundle::unpack(body); // 进行解压缩，将解压缩后的数据保存到unpack中
  std::ofstream ofs;
  ofs.open(ofilename, std::ios::binary); // 打开文件
  ofs.write(&unpacked[0], unpacked.size()); // 将解压缩后的数据写入文件
  ofs.close();
  return 0;
}

